<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // - 定义变量的，不能再次定义，但是值可以改变。
    // let age = 10
    // let age = 20  // Identifier 'age' has already been declared



    
    // - 存在块级作用域
    // 块级作用就是 {} 中的作用域
    // if ( true ) {
    //   var a = 10
    // }
    // console.log(a)  // 10  

    // if (true) {
    //   let b = 20
    // }
    // console.log(b) //  b is not defined



    // - 不存在变量提升（暂时性死区），好的语法习惯先声明后使用
    // function fn () {
    //   //使用var 变量提升：var a;
    //   //使用let 不存在变量提升  Cannot access 'a' before initialization
    //   console.log(a)
    //   // 不能访问a的代码块  认为是暂时性死区
    //   let a = 10
    // }
    // fn()


    // - let在全局环境下定义的变量。不会挂载到window对象下
    var a = 10
    console.log(window.a)  // 10
    let b = 20 
    console.log(window.b)  // undefined

  </script>
</body>

</html>